package pe.gob.mimp.dao.impl;

import java.util.List;

import org.hibernate.Criteria;
import org.hibernate.criterion.MatchMode;
import org.hibernate.criterion.Restrictions;
import org.springframework.stereotype.Repository;

import pe.gob.mimp.dao.PersonaDao;
import pe.gob.mimp.model.Persona;
import pe.gob.mimp.model.TablaParametrica;

@Repository
public class PersonaDaoImpl extends AbstractDaoImpl<Persona, Long> implements
		PersonaDao {

	protected PersonaDaoImpl() {
		super(Persona.class);
		// TODO Auto-generated constructor stub
	}

	public Persona getPersonaPorId(Long idPersona) {
		return findById(idPersona);
	}

	public void savePersona(Persona persona) {
		saveOrUpdate(persona);
	}

	@SuppressWarnings("unchecked")
	public Persona getPersonaPorTipoDocumento(Long idTipoDocumento,
			String nroDocumento) {
		List<Persona> lista;
		Persona persona = null;
		Criteria criteria = getCurrentSession().createCriteria(Persona.class);
		criteria.add(Restrictions.eq("nroDocumento", nroDocumento))
				.add(Restrictions.eq("idTipodocumento", idTipoDocumento));
		lista = criteria.list();
		if (!lista.isEmpty()) {
			persona = (Persona) criteria.list().get(0);
		}
		return persona;
	}
	
	@SuppressWarnings("unchecked")
	public List<Persona> getResponsables() {
		return findByCriteria(Restrictions.eq("idTipopersona", 39L));
	}
	
	@SuppressWarnings("unchecked")
	public List<Persona> getResponsablesAnterior() {
		Criteria criteria = getCurrentSession().createCriteria(Persona.class);
		criteria.createCriteria("idTipopersona").add(
				Restrictions.like("valor", "RESPONSABLE"));
		return criteria.list();
	}

}
